<?php

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ModelosAnios
 * Esta clase se debio crear para aprovechar el plugin de selects dependientes debido
 * a que la opcion para obtener los datos desde doctrine no funciona a causa de que los campos
 * con llaves foraneas no tienen los nombres segun la estrutura de symfony, por lo cual se
 * cargaran en un arreglo todos los años disponibles, asi como sus respectivos modelos
 * Posteriormente se modifico para agregar los datos y variables para los horarios (mañana/tarde)
 * y tambien para manejar las horas.
 * @author Ing. Roberto Hernández De La Luz
 */
abstract class ModelosAnios
{
    
    /*
     * Variable creada para manejar los horarios (mañana / tarde)
     * Se ignorara este campo debido a una peticion del cliente el 16/11/2011
     */
    private static $horario = array(
        'Mañana' => 'Mañana',
        'Tarde' => 'Tarde',

    );
    
     /*
     * Variable creada para manejar los horarios (horas)
     * Se ignoraran debido a un cambio de ultimo momento que solicito el cliente el 16/11/2011
     * ahora se manejaran todas las horas juntas.
     */
    private static $horas = array(
        'Mañana' => array('07:30 am' => '07:30 am',
                                 '07:45 am' => '07:45 am',
                                 '08:00 am' => '08:00 am',
                                 '08:15 am' => '08:15 am',
                                 '08:30 am' => '08:30 am',
                                 '08:45 am' => '08:45 am',
                                 '09:00 am' => '09:00 am',
                                 '09:15 am' => '09:15 am',
                                 '09:30 am' => '09:30 am',
                                 '09:45 am' => '09:45 am',
                                 '10:00 am' => '10:00 am',
                                 '10:15 am' => '10:15 am',
                                 '10:30 am' => '10:30 am',
                                 '10:45 am' => '10:45 am',
                                 '11:00 am' => '11:00 am',
                                 '11:15 am' => '11:15 am',
                                 '11:30 am' => '11:30 am',
                                 '11:45 am' => '11:45 am',
        ),
        'Tarde' => array('01:00 pm' => '01:00 pm',
                                 '01:15 pm' => '01:15 pm',
                                 '01:30 pm' => '01:30 pm',
                                 '01:45 pm' => '01:45 pm',
                                 '02:00 pm' => '02:00 pm',
                                 '02:15 pm' => '02:15 pm',
                                 '02:30 pm' => '02:30 pm',
                                 '02:45 pm' => '02:45 pm',
                                 '03:00 pm' => '03:00 pm',
                                 '03:15 pm' => '03:15 pm',
                                 '03:30 pm' => '03:30 pm',
                                 '03:45 pm' => '03:45 pm',
                                 '04:00 pm' => '04:00 pm',
                                 '04:15 pm' => '04:15 pm',
                                 '04:30 pm' => '04:30 pm',
                                 '04:45 pm' => '04:45 pm',
            ),
    );
    
     /*
     * Variable creada para manejar los horarios
     * a una peticion del cliente el 16/11/2011
     */
    private static $horasfinal = array(
        '07:30 am' => '07:30 am',
                                 '07:45 am' => '07:45 am',
                                 '08:00 am' => '08:00 am',
                                 '08:15 am' => '08:15 am',
                                 '08:30 am' => '08:30 am',
                                 '08:45 am' => '08:45 am',
                                 '09:00 am' => '09:00 am',
                                 '09:15 am' => '09:15 am',
                                 '09:30 am' => '09:30 am',
                                 '09:45 am' => '09:45 am',
                                 '10:00 am' => '10:00 am',
                                 '10:15 am' => '10:15 am',
                                 '10:30 am' => '10:30 am',
                                 '10:45 am' => '10:45 am',
                                 '11:00 am' => '11:00 am',
                                 '11:15 am' => '11:15 am',
                                 '11:30 am' => '11:30 am',
                                 '11:45 am' => '11:45 am',
                                 '01:00 pm' => '01:00 pm',
                                 '01:15 pm' => '01:15 pm',
                                 '01:30 pm' => '01:30 pm',
                                 '01:45 pm' => '01:45 pm',
                                 '02:00 pm' => '02:00 pm',
                                 '02:15 pm' => '02:15 pm',
                                 '02:30 pm' => '02:30 pm',
                                 '02:45 pm' => '02:45 pm',
                                 '03:00 pm' => '03:00 pm',
                                 '03:15 pm' => '03:15 pm',
                                 '03:30 pm' => '03:30 pm',
                                 '03:45 pm' => '03:45 pm',
                                 '04:00 pm' => '04:00 pm',
                                 '04:15 pm' => '04:15 pm',
                                 '04:30 pm' => '04:30 pm',
                                 '04:45 pm' => '04:45 pm',
    );
    
     /*
     * Metodo para cargar los horarios finales
      * agregado a peticion del cliente el 16/11/2011
     */
    public static function getHorariosfinales(){
        return self::$horasfinal;
    }
    
    /*
     * Metodo para cargar los horarios
     */
    public static function getHorario(){
        return self::$horario;
    }
    
    /**
     * Metodo para cargar las horas
     */
    public static function getHoras(){
         return self::$horas;
    }

    /**
     * Metodo para cargar todos los años disponibles
     * @var type 
     */
    public static function getAnios()
    {
       /* $anioss = Doctrine_Core::getTable('Ano')
                ->createQuery('a')
                ->orderBy('numero DESC')
                ->execute();
        */
        
        $anioss = Doctrine_Query::create()
                ->select('*')
                ->from('Ano a, AnoModelo am')
                ->where('a.id_ano = am.id_ano')
                ->orderBy('a.numero DESC')
                ->execute();
        
        $anios = array();
        
        foreach($anioss as $anio):
            $anios[$anio->getIdAno()] = $anio->getNumero();
        endforeach;
        
        return $anios;
    }

    /**
     * Metodo para cargar todos los modelos de acuerdo a su año
     * @var type 
     */
    public static function getModelos()
    {
        //Se crea el array vacio
        $modelos = array();

        //Se obtienen todos los años
        $anioss = Doctrine_Query::create()
                ->select('*')
                ->from('Ano a, AnoModelo am')
                ->where('a.id_ano = am.id_ano')
                ->orderBy('a.numero DESC')
                ->execute();
        
        //Por cada año se buscaran los id de modelo
        foreach($anioss as $anio):
            
            //Se crea un segundo array vacio para almacenar temporalmente el año al que pertenece y cada uno de los modelos para ese año
            $temp = array();
            
            //Se obtiene los años modelos
            $am = Doctrine_Core::getTable('AnoModelo')
                ->createQuery('aa')
                ->where('aa.id_ano = ?',$anio->getIdAno())
                ->execute();
        
            //Se crea un segundo ciclo para buscar y obtener cada uno de los id y nombre de modelos
            foreach($am as $amm):
                $temp[$amm->getIdAnoModelo()] = $amm->getModelo()->getNombre();
            endforeach;
            
            //Se guarda el valor del array temporal dentro del array final para dicho año
            $modelos[$anio->getIdAno()] = $temp;
            //Se destruye la variable para evitar errores y que cuando empiece a almacenar valores para el siguiente año no arrastre valores del anterior
            unset($temp);
            
        endforeach;

        return $modelos;
    }    
}           

?>
